In order to develop application programs for SMP's, it is desirable to dynamically test the newly written application programs to determine their performance, and modify them if necessary to improve their performance. It is also desirable to develop such programs on a single processor workstation to free the SMP system from being diverted to program development purposes. The programs may then be improved to minimize data dependence, inter-process communication costs, and excess overhead due to ineffective utilization of the available SMP's.
The performance of software systems running on SMP systems have commonly been determined by simulation techniques. Simulation techniques according to the prior art have relied upon user provided estimates of the cost of various operations that are being simulated. While this is an effective technique when these estimates are both known and constant, it is not a viable technique for those costs that are not known at compile time or which depend on a routine data dependence in the system. It includes a high resolution virtual timer system for actually timing the execution of the processes as they execute. The execution times of the processes and I/O systems used in these systems are estimated values. Estimated values of the process execution times are difficult to ascertain, particularly with a combination of independent and parallel processing of the processes with the different SMP's.